package Text22;

import java.util.Scanner;

public class Main {
    //    输入格式:输入包含多组数据，每组数据占一行，包含一个正整数表示 X。
//    输出格式:对于每组数据，输出序列的最大长度以及满足最大长度的序列的个数。
//    每个结果占一行。
    static int N = (1 << 20) + 10;
    static int[] primes = new int[N];
    static int[] minp = new int[N];

    static boolean[] st = new boolean[N];

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        get_primes(N - 1);
        int[] sum = new int[N];
        while (in.hasNextInt()) {
            int x = in.nextInt();
            int k = 0, tot = 0;
            while (x > 1) {
                int p = minp[x];
                sum[k] = 0;
                while (x % p == 0) {
                    x /= p;
                    sum[k]++;
                    tot++;
                }
                k++;
            }
            long res = 1;
            for (int i = 2; i <= tot; i++) {
                res *= i;
            }
            for (int i = 0; i < k; i++)
                for (int j = 1; j <= sum[i]; j++)
                    res /= j;
            System.out.println(tot + " " + res);
        }
    }

    private static void get_primes(int n) {
        int cnt = 0;
        for (int i = 2; i <= n; i++) {
            if (!st[i]) {
                st[i] = true;
                minp[i] = i;
                primes[cnt++] = i;
            }
            for (int j = 0; primes[j] * i <= n; j++) {
                int t = primes[j] * i;
                st[t] = true;
                minp[t] = primes[j];
                if (i % primes[j] == 0) {
                    break;
                }
            }
        }
    }
}